
const moment = require('moment'); // require
moment.locale('zh-cn')
const formatStr = 'YYYY-MM-DD HH:mm:ss'


/**
 * 获取传入日期 今天0点和24点的数据列表
 * @param {*} date 
 * @returns  [ '2024-03-11 00:00:00', '2024-03-11 23:59:59' ]
 */
const getStartAndEndDayList = (date) => {
    const t = date ? moment(date) : moment()
    return [t.startOf('day').format(formatStr), t.endOf('day').format(formatStr)]
}
console.log(getStartAndEndDayList());

/**
 * 获取传入日期本月第一天和最后一天的数据列表
 * @returns [ '2024-03-01 00:00:00', '2024-03-31 23:59:59' ]
 */
const getStartAndEndMonthList = (date) => {
    const t = date ? moment(date) : moment()
    return [t.startOf('month').format(formatStr), t.endOf('month').format(formatStr)]
}


/**
 * 获取近1个月时间范围列表
 * @param {*} date 
 * @returns 
 */
const getNearOneMonthList = (date) => {
    const t = date ? moment(date) : moment()
    return [t.subtract(1, 'month').format(formatStr), moment().format(formatStr)]
}

console.log('getNearOneMonthList()',getNearOneMonthList())

const getStartAndEndQuarterList = (date) => {
    const t = date ? moment(date) : moment()
    return [t.startOf('quarter').format(formatStr), t.endOf('quarter').format(formatStr)]
}

/**
 * 获取传入日期的前7天和后7天的数据列表
 * @param {*} date 
 * @returns 
 */
const getPrev7AndTodayAndNext7List = (date) => {
    const t = date ? moment(date) : moment()
    //subtract方法时间来改变原始 moment。所以搞出来2个moment对象
    return [t.subtract(7, 'days').format(formatStr), t.add(7, 'day').format(formatStr), t.add(7, 'day').format(formatStr)]
}

const r1 = getPrev7AndTodayAndNext7List()
console.log('r1', r1)

/**
 * 从此刻到过去的时间  
 * @param {*} date 
 * @returns  获取几年前、几月前、几分前。。。
 */
const getFromNowString = (date) => {
    if (!date) return ''
    return moment(date).fromNow()
}

console.log(getFromNowString('2020-09-11 15:14:33'))


const diff = (date) => {
    if (!date) return ''
    const t = moment.duration(moment(date).diff(moment()))
    return `${t.years()}年${t.months()}月${t.days()}日${t.hours()}小时${t.minutes()}分`
}

console.log(getStartAndEndQuarterList());
